package com.eshop.base.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 订单主表
 * </p>
 *
 * @author raohj
 * @since 2025-05-13
 */
@Getter
@Setter
@ToString
@TableName("`order`")
@Accessors(chain = true)
@Data
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单唯一ID
     */
    @TableId(value = "order_id", type = IdType.AUTO)
    private Long orderId;

    /**
     * 订单号（业务唯一，如20230801123456）
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 关联用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 订单总金额（含运费）
     */
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /**
     * 实际支付金额（含优惠抵扣）
     */
    @TableField("pay_amount")
    private BigDecimal payAmount;

    /**
     * 运费金额
     */
    @TableField("freight_amount")
    private BigDecimal freightAmount;

    /**
     * 订单状态（1待支付,2已支付,3已发货,4已完成,5已取消,6已关闭）
     */
    @TableField("status")
    private Byte status;

    /**
     * 支付方式（1支付宝,2微信,3银行卡）
     */
    @TableField("payment_method")
    private Byte paymentMethod;

    /**
     * 配送方式（1快递,2自提）
     */
    @TableField("delivery_type")
    private Byte deliveryType;

    /**
     * 用户备注
     */
    @TableField("remark")
    private String remark;

    @TableField("created_at")
    private LocalDateTime createdAt;

    @TableField("updated_at")
    private LocalDateTime updatedAt;
}
